package top.byteio.common.s3.config;

import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * 对象存储 配置信息
 * <pre>
 * 配置文件添加：
 * enable: true
 * endpoint: {http://127.0.0.1:9000}
 * pathStyleAccess 采用nginx反向代理或者AWS S3 配置成true，支持第三方云存储配置设置成false
 * access-key: 公钥
 * secret-key: 密钥
 * bucket-name: 桶名称
 * region: 桶区域
 * custom-domain: {https://oss.xxx.com/}
 * bucket 设置公共读权限
 * </pre>
* @author lerryxia
*/
@Data
@ConfigurationProperties(prefix = "jole.common.s3.properties")
public class S3Properties {
    /**
     * 存储类型 ali,minio,kode,tencent,local
     * <br> 默认 local
     */
    @Deprecated
    private String type;


    /**
     * 是否启用对象存储
     *
     * @since 2023/6/29 21:57
     */
    private String enable;

    /**
     * 对象存储服务的URL
     * <br>
     * <pre>
     *  例如：{https://www.byteio.top，
     *       http://127.0.0.1:9000}
     * </pre>
     */
    private String endpoint;

    /**
     * 自定义对象存储服务的URL域名
     */
    private String customDomain;

    /**
     * 桶访问url模式
     * <p>
     * <br>1. true: <b>path-style</b>为nginx反向代理和S3默认支持的模式。
     * <br>   桶访问url(endpoint)形如：{http://endpoint/bucketname}
     * <br>2. false: <b>virtual-hosted-style</b>,阿里云等需要配置为此模式。
     * <br>   桶访问url(endpoint)形如：{http://bucketname.endpoint}
     * </p>
     */
    private final Boolean pathStyleAccess = true;

    /**
     * 应用ID
     */
    private String appId;


    /**
     * 桶区域
     */
    private String region;

    /**
     * 公钥
     */
    @NotNull
    private String accessKey;

    /**
     * 密钥
     */
    @NotNull
    private String secretKey;

    /**
     * 桶名称
     */
    private String bucketName;

    /**
     * 最大线程数，默认： 100
     */
    private final Integer maxConnections = 100;
}
